package com.gengzp.common.document.core;

import com.gengzp.common.document.model.dto.FieldDocumentDto;

import java.lang.reflect.Method;
import java.util.List;

/**
 * @ClassName DocumentAnnotationsReader
 * @Description 文档注解读取器接口
 * @Author gengzp
 * @Date 2025/5/21 0:41
 */
public interface DocumentAnnotationReader {

    /**
     * 查询所有控制器 bean
     *
     * @return 控制层所有 bean
     */
    List<Object> searchAllControllerClass();

    /**
     * 从方法上查询 url
     *
     * @param method 方法
     * @return 方法的url
     */
    String getMappingAnnotationUrlFromMethod(Method method);

    /**
     * 获取方法的请求类型
     *
     * @param method 方法
     * @return 请求类型
     */
    String getMethodRequestType(Method method);

    /**
     * 根据完整的url获取方法
     *
     * @param controllerUrl 控制器url
     * @param methodUrl     方法url
     * @return 方法
     */
    Method getMethodByUrl(String controllerUrl, String methodUrl);

    /**
     * 获取参数的描述
     *
     * @param bean 参数bean
     * @return 参数描述
     */
    String getParamDescription(Class<?> bean);

}
